
#include "A4954.h"
#include "board.h"
#include "Configuration.h"
#include "Configurationals.h"
#include "analogFastWrite.h"
#include "State.h"



//---- lookup tables for the sin and cosin shiftet by 45° ----
const int sin_lookup[3600] = {2896 , 2901 , 2906 , 2911 , 2916 , 2921 , 2926 , 2931 , 2936 , 2941 , 2946 , 2951 , 2956 , 2961 , 2966 , 2971 , 2976 , 2981 , 2986 , 2991 , 2996 , 3000 , 3005 , 3010 , 3015 , 3020 , 3025 , 3030 , 3034 , 3039 , 3044 , 3049 , 3053 , 3058 , 3063 , 3068 , 3072 , 3077 , 3082 , 3087 , 3091 , 3096 , 3101 , 3105 , 3110 , 3115 , 3119 , 3124 , 3129 , 3133 , 3138 , 3142 , 3147 , 3151 , 3156 , 3161 , 3165 , 3170 , 3174 , 3179 , 3183 , 3188 , 3192 , 3197 , 3201 , 3206 , 3210 , 3214 , 3219 , 3223 , 3228 , 3232 , 3236 , 3241 , 3245 , 3250 , 3254 , 3258 , 3263 , 3267 , 3271 , 3276 , 3280 , 3284 , 3288 , 3293 , 3297 , 3301 , 3305 , 3310 , 3314 , 3318 , 3322 , 3326 , 3330 , 3335 , 3339 , 3343 , 3347 , 3351 , 3355 , 3359 , 3363 , 3368 , 3372 , 3376 , 3380 , 3384 , 3388 , 3392 , 3396 , 3400 , 3404 , 3408 , 3412 , 3416 , 3420 , 3423 , 3427 , 3431 , 3435 , 3439 , 3443 , 3447 , 3451 , 3455 , 3458 , 3462 , 3466 , 3470 , 3474 , 3477 , 3481 , 3485 , 3489 , 3492 , 3496 , 3500 , 3504 , 3507 , 3511 , 3515 , 3518 , 3522 , 3526 , 3529 , 3533 , 3536 , 3540 , 3544 , 3547 , 3551 , 3554 , 3558 , 3561 , 3565 , 3568 , 3572 , 3575 , 3579 , 3582 , 3586 , 3589 , 3593 , 3596 , 3600 , 3603 , 3606 , 3610 , 3613 , 3617 , 3620 , 3623 , 3627 , 3630 , 3633 , 3636 , 3640 , 3643 , 3646 , 3650 , 3653 , 3656 , 3659 , 3662 , 3666 , 3669 , 3672 , 3675 , 3678 , 3681 , 3685 , 3688 , 3691 , 3694 , 3697 , 3700 , 3703 , 3706 , 3709 , 3712 , 3715 , 3718 , 3721 , 3724 , 3727 , 3730 , 3733 , 3736 , 3739 , 3742 , 3745 , 3748 , 3751 , 3753 , 3756 , 3759 , 3762 , 3765 , 3768 , 3770 , 3773 , 3776 , 3779 , 3781 , 3784 , 3787 , 3790 , 3792 , 3795 , 3798 , 3800 , 3803 , 3806 , 3808 , 3811 , 3814 , 3816 , 3819 , 3821 , 3824 , 3827 , 3829 , 3832 , 3834 , 3837 , 3839 , 3842 , 3844 , 3847 , 3849 , 3851 , 3854 , 3856 , 3859 , 3861 , 3863 , 3866 , 3868 , 3871 , 3873 , 3875 , 3877 , 3880 , 3882 , 3884 , 3887 , 3889 , 3891 , 3893 , 3896 , 3898 , 3900 , 3902 , 3904 , 3906 , 3909 , 3911 , 3913 , 3915 , 3917 , 3919 , 3921 , 3923 , 3925 , 3927 , 3929 , 3931 , 3933 , 3935 , 3937 , 3939 , 3941 , 3943 , 3945 , 3947 , 3949 , 3951 , 3953 , 3955 , 3956 , 3958 , 3960 , 3962 , 3964 , 3966 , 3967 , 3969 , 3971 , 3973 , 3974 , 3976 , 3978 , 3979 , 3981 , 3983 , 3984 , 3986 , 3988 , 3989 , 3991 , 3993 , 3994 , 3996 , 3997 , 3999 , 4000 , 4002 , 4003 , 4005 , 4006 , 4008 , 4009 , 4011 , 4012 , 4014 , 4015 , 4017 , 4018 , 4019 , 4021 , 4022 , 4023 , 4025 , 4026 , 4027 , 4029 , 4030 , 4031 , 4033 , 4034 , 4035 , 4036 , 4037 , 4039 , 4040 , 4041 , 4042 , 4043 , 4044 , 4046 , 4047 , 4048 , 4049 , 4050 , 4051 , 4052 , 4053 , 4054 , 4055 , 4056 , 4057 , 4058 , 4059 , 4060 , 4061 , 4062 , 4063 , 4064 , 4065 , 4065 , 4066 , 4067 , 4068 , 4069 , 4070 , 4070 , 4071 , 4072 , 4073 , 4074 , 4074 , 4075 , 4076 , 4076 , 4077 , 4078 , 4078 , 4079 , 4080 , 4080 , 4081 , 4082 , 4082 , 4083 , 4083 , 4084 , 4084 , 4085 , 4086 , 4086 , 4087 , 4087 , 4087 , 4088 , 4088 , 4089 , 4089 , 4090 , 4090 , 4090 , 4091 , 4091 , 4091 , 4092 , 4092 , 4092 , 4093 , 4093 , 4093 , 4094 , 4094 , 4094 , 4094 , 4094 , 4095 , 4095 , 4095 , 4095 , 4095 , 4095 , 4095 , 4096 , 4096 , 4096 , 4096 , 4096 , 4096 , 4096 , 4096 , 4096 , 4096 , 4096 , 4096 , 4096 , 4096 , 4096 , 4096 , 4096 , 4095 , 4095 , 4095 , 4095 , 4095 , 4095 , 4095 , 4094 , 4094 , 4094 , 4094 , 4094 , 4093 , 4093 , 4093 , 4092 , 4092 , 4092 , 4091 , 4091 , 4091 , 4090 , 4090 , 4090 , 4089 , 4089 , 4088 , 4088 , 4087 , 4087 , 4087 , 4086 , 4086 , 4085 , 4084 , 4084 , 4083 , 4083 , 4082 , 4082 , 4081 , 4080 , 4080 , 4079 , 4078 , 4078 , 4077 , 4076 , 4076 , 4075 , 4074 , 4074 , 4073 , 4072 , 4071 , 4070 , 4070 , 4069 , 4068 , 4067 , 4066 , 4065 , 4065 , 4064 , 4063 , 4062 , 4061 , 4060 , 4059 , 4058 , 4057 , 4056 , 4055 , 4054 , 4053 , 4052 , 4051 , 4050 , 4049 , 4048 , 4047 , 4046 , 4044 , 4043 , 4042 , 4041 , 4040 , 4039 , 4037 , 4036 , 4035 , 4034 , 4033 , 4031 , 4030 , 4029 , 4027 , 4026 , 4025 , 4023 , 4022 , 4021 , 4019 , 4018 , 4017 , 4015 , 4014 , 4012 , 4011 , 4009 , 4008 , 4006 , 4005 , 4003 , 4002 , 4000 , 3999 , 3997 , 3996 , 3994 , 3993 , 3991 , 3989 , 3988 , 3986 , 3984 , 3983 , 3981 , 3979 , 3978 , 3976 , 3974 , 3973 , 3971 , 3969 , 3967 , 3966 , 3964 , 3962 , 3960 , 3958 , 3956 , 3955 , 3953 , 3951 , 3949 , 3947 , 3945 , 3943 , 3941 , 3939 , 3937 , 3935 , 3933 , 3931 , 3929 , 3927 , 3925 , 3923 , 3921 , 3919 , 3917 , 3915 , 3913 , 3911 , 3909 , 3906 , 3904 , 3902 , 3900 , 3898 , 3896 , 3893 , 3891 , 3889 , 3887 , 3884 , 3882 , 3880 , 3877 , 3875 , 3873 , 3871 , 3868 , 3866 , 3863 , 3861 , 3859 , 3856 , 3854 , 3851 , 3849 , 3847 , 3844 , 3842 , 3839 , 3837 , 3834 , 3832 , 3829 , 3827 , 3824 , 3821 , 3819 , 3816 , 3814 , 3811 , 3808 , 3806 , 3803 , 3800 , 3798 , 3795 , 3792 , 3790 , 3787 , 3784 , 3781 , 3779 , 3776 , 3773 , 3770 , 3768 , 3765 , 3762 , 3759 , 3756 , 3753 , 3751 , 3748 , 3745 , 3742 , 3739 , 3736 , 3733 , 3730 , 3727 , 3724 , 3721 , 3718 , 3715 , 3712 , 3709 , 3706 , 3703 , 3700 , 3697 , 3694 , 3691 , 3688 , 3685 , 3681 , 3678 , 3675 , 3672 , 3669 , 3666 , 3662 , 3659 , 3656 , 3653 , 3650 , 3646 , 3643 , 3640 , 3636 , 3633 , 3630 , 3627 , 3623 , 3620 , 3617 , 3613 , 3610 , 3606 , 3603 , 3600 , 3596 , 3593 , 3589 , 3586 , 3582 , 3579 , 3575 , 3572 , 3568 , 3565 , 3561 , 3558 , 3554 , 3551 , 3547 , 3544 , 3540 , 3536 , 3533 , 3529 , 3526 , 3522 , 3518 , 3515 , 3511 , 3507 , 3504 , 3500 , 3496 , 3492 , 3489 , 3485 , 3481 , 3477 , 3474 , 3470 , 3466 , 3462 , 3458 , 3455 , 3451 , 3447 , 3443 , 3439 , 3435 , 3431 , 3427 , 3423 , 3420 , 3416 , 3412 , 3408 , 3404 , 3400 , 3396 , 3392 , 3388 , 3384 , 3380 , 3376 , 3372 , 3368 , 3363 , 3359 , 3355 , 3351 , 3347 , 3343 , 3339 , 3335 , 3330 , 3326 , 3322 , 3318 , 3314 , 3310 , 3305 , 3301 , 3297 , 3293 , 3288 , 3284 , 3280 , 3276 , 3271 , 3267 , 3263 , 3258 , 3254 , 3250 , 3245 , 3241 , 3236 , 3232 , 3228 , 3223 , 3219 , 3214 , 3210 , 3206 , 3201 , 3197 , 3192 , 3188 , 3183 , 3179 , 3174 , 3170 , 3165 , 3161 , 3156 , 3151 , 3147 , 3142 , 3138 , 3133 , 3129 , 3124 , 3119 , 3115 , 3110 , 3105 , 3101 , 3096 , 3091 , 3087 , 3082 , 3077 , 3072 , 3068 , 3063 , 3058 , 3053 , 3049 , 3044 , 3039 , 3034 , 3030 , 3025 , 3020 , 3015 , 3010 , 3005 , 3000 , 2996 , 2991 , 2986 , 2981 , 2976 , 2971 , 2966 , 2961 , 2956 , 2951 , 2946 , 2941 , 2936 , 2931 , 2926 , 2921 , 2916 , 2911 , 2906 , 2901 , 2896 , 2891 , 2886 , 2881 , 2876 , 2871 , 2866 , 2861 , 2856 , 2850 , 2845 , 2840 , 2835 , 2830 , 2825 , 2820 , 2814 , 2809 , 2804 , 2799 , 2793 , 2788 , 2783 , 2778 , 2772 , 2767 , 2762 , 2757 , 2751 , 2746 , 2741 , 2735 , 2730 , 2725 , 2719 , 2714 , 2709 , 2703 , 2698 , 2693 , 2687 , 2682 , 2676 , 2671 , 2666 , 2660 , 2655 , 2649 , 2644 , 2638 , 2633 , 2627 , 2622 , 2616 , 2611 , 2605 , 2600 , 2594 , 2589 , 2583 , 2578 , 2572 , 2567 , 2561 , 2555 , 2550 , 2544 , 2539 , 2533 , 2527 , 2522 , 2516 , 2510 , 2505 , 2499 , 2493 , 2488 , 2482 , 2476 , 2471 , 2465 , 2459 , 2454 , 2448 , 2442 , 2436 , 2431 , 2425 , 2419 , 2413 , 2408 , 2402 , 2396 , 2390 , 2384 , 2379 , 2373 , 2367 , 2361 , 2355 , 2349 , 2344 , 2338 , 2332 , 2326 , 2320 , 2314 , 2308 , 2302 , 2296 , 2290 , 2285 , 2279 , 2273 , 2267 , 2261 , 2255 , 2249 , 2243 , 2237 , 2231 , 2225 , 2219 , 2213 , 2207 , 2201 , 2195 , 2189 , 2183 , 2177 , 2171 , 2164 , 2158 , 2152 , 2146 , 2140 , 2134 , 2128 , 2122 , 2116 , 2110 , 2103 , 2097 , 2091 , 2085 , 2079 , 2073 , 2067 , 2060 , 2054 , 2048 , 2042 , 2036 , 2029 , 2023 , 2017 , 2011 , 2005 , 1998 , 1992 , 1986 , 1980 , 1973 , 1967 , 1961 , 1954 , 1948 , 1942 , 1936 , 1929 , 1923 , 1917 , 1910 , 1904 , 1898 , 1891 , 1885 , 1879 , 1872 , 1866 , 1860 , 1853 , 1847 , 1840 , 1834 , 1828 , 1821 , 1815 , 1808 , 1802 , 1796 , 1789 , 1783 , 1776 , 1770 , 1763 , 1757 , 1750 , 1744 , 1738 , 1731 , 1725 , 1718 , 1712 , 1705 , 1699 , 1692 , 1686 , 1679 , 1673 , 1666 , 1659 , 1653 , 1646 , 1640 , 1633 , 1627 , 1620 , 1614 , 1607 , 1600 , 1594 , 1587 , 1581 , 1574 , 1567 , 1561 , 1554 , 1548 , 1541 , 1534 , 1528 , 1521 , 1514 , 1508 , 1501 , 1495 , 1488 , 1481 , 1475 , 1468 , 1461 , 1455 , 1448 , 1441 , 1434 , 1428 , 1421 , 1414 , 1408 , 1401 , 1394 , 1387 , 1381 , 1374 , 1367 , 1361 , 1354 , 1347 , 1340 , 1334 , 1327 , 1320 , 1313 , 1306 , 1300 , 1293 , 1286 , 1279 , 1273 , 1266 , 1259 , 1252 , 1245 , 1239 , 1232 , 1225 , 1218 , 1211 , 1204 , 1198 , 1191 , 1184 , 1177 , 1170 , 1163 , 1156 , 1150 , 1143 , 1136 , 1129 , 1122 , 1115 , 1108 , 1101 , 1095 , 1088 , 1081 , 1074 , 1067 , 1060 , 1053 , 1046 , 1039 , 1032 , 1026 , 1019 , 1012 , 1005 ,  998 ,  991 ,  984 ,  977 ,  970 ,  963 ,  956 ,  949 ,  942 ,  935 ,  928 ,  921 ,  914 ,  907 ,  900 ,  894 ,  887 ,  880 ,  873 ,  866 ,  859 ,  852 ,  845 ,  838 ,  831 ,  824 ,  817 ,  810 ,  803 ,  796 ,  789 ,  782 ,  775 ,  768 ,  760 ,  753 ,  746 ,  739 ,  732 ,  725 ,  718 ,  711 ,  704 ,  697 ,  690 ,  683 ,  676 ,  669 ,  662 ,  655 ,  648 ,  641 ,  634 ,  627 ,  620 ,  612 ,  605 ,  598 ,  591 ,  584 ,  577 ,  570 ,  563 ,  556 ,  549 ,  542 ,  535 ,  528 ,  520 ,  513 ,  506 ,  499 ,  492 ,  485 ,  478 ,  471 ,  464 ,  457 ,  449 ,  442 ,  435 ,  428 ,  421 ,  414 ,  407 ,  400 ,  393 ,  385 ,  378 ,  371 ,  364 ,  357 ,  350 ,  343 ,  336 ,  328 ,  321 ,  314 ,  307 ,  300 ,  293 ,  286 ,  279 ,  271 ,  264 ,  257 ,  250 ,  243 ,  236 ,  229 ,  222 ,  214 ,  207 ,  200 ,  193 ,  186 ,  179 ,  172 ,  164 ,  157 ,  150 ,  143 ,  136 ,  129 ,  122 ,  114 ,  107 ,  100 ,   93 ,   86 ,   79 ,   71 ,   64 ,   57 ,   50 ,   43 ,   36 ,   29 ,   21 ,   14 ,    7 ,    0 ,   -7 ,  -14 ,  -21 ,  -29 ,  -36 ,  -43 ,  -50 ,  -57 ,  -64 ,  -71 ,  -79 ,  -86 ,  -93 , -100 , -107 , -114 , -122 , -129 , -136 , -143 , -150 , -157 , -164 , -172 , -179 , -186 , -193 , -200 , -207 , -214 , -222 , -229 , -236 , -243 , -250 , -257 , -264 , -271 , -279 , -286 , -293 , -300 , -307 , -314 , -321 , -328 , -336 , -343 , -350 , -357 , -364 , -371 , -378 , -385 , -393 , -400 , -407 , -414 , -421 , -428 , -435 , -442 , -449 , -457 , -464 , -471 , -478 , -485 , -492 , -499 , -506 , -513 , -520 , -528 , -535 , -542 , -549 , -556 , -563 , -570 , -577 , -584 , -591 , -598 , -605 , -612 , -620 , -627 , -634 , -641 , -648 , -655 , -662 , -669 , -676 , -683 , -690 , -697 , -704 , -711 , -718 , -725 , -732 , -739 , -746 , -753 , -760 , -768 , -775 , -782 , -789 , -796 , -803 , -810 , -817 , -824 , -831 , -838 , -845 , -852 , -859 , -866 , -873 , -880 , -887 , -894 , -900 , -907 , -914 , -921 , -928 , -935 , -942 , -949 , -956 , -963 , -970 , -977 , -984 , -991 , -998 , -1005 , -1012 , -1019 , -1026 , -1032 , -1039 , -1046 , -1053 , -1060 , -1067 , -1074 , -1081 , -1088 , -1095 , -1101 , -1108 , -1115 , -1122 , -1129 , -1136 , -1143 , -1150 , -1156 , -1163 , -1170 , -1177 , -1184 , -1191 , -1198 , -1204 , -1211 , -1218 , -1225 , -1232 , -1239 , -1245 , -1252 , -1259 , -1266 , -1273 , -1279 , -1286 , -1293 , -1300 , -1306 , -1313 , -1320 , -1327 , -1334 , -1340 , -1347 , -1354 , -1361 , -1367 , -1374 , -1381 , -1387 , -1394 , -1401 , -1408 , -1414 , -1421 , -1428 , -1434 , -1441 , -1448 , -1455 , -1461 , -1468 , -1475 , -1481 , -1488 , -1495 , -1501 , -1508 , -1514 , -1521 , -1528 , -1534 , -1541 , -1548 , -1554 , -1561 , -1567 , -1574 , -1581 , -1587 , -1594 , -1600 , -1607 , -1614 , -1620 , -1627 , -1633 , -1640 , -1646 , -1653 , -1659 , -1666 , -1673 , -1679 , -1686 , -1692 , -1699 , -1705 , -1712 , -1718 , -1725 , -1731 , -1738 , -1744 , -1750 , -1757 , -1763 , -1770 , -1776 , -1783 , -1789 , -1796 , -1802 , -1808 , -1815 , -1821 , -1828 , -1834 , -1840 , -1847 , -1853 , -1860 , -1866 , -1872 , -1879 , -1885 , -1891 , -1898 , -1904 , -1910 , -1917 , -1923 , -1929 , -1936 , -1942 , -1948 , -1954 , -1961 , -1967 , -1973 , -1980 , -1986 , -1992 , -1998 , -2005 , -2011 , -2017 , -2023 , -2029 , -2036 , -2042 , -2048 , -2054 , -2060 , -2067 , -2073 , -2079 , -2085 , -2091 , -2097 , -2103 , -2110 , -2116 , -2122 , -2128 , -2134 , -2140 , -2146 , -2152 , -2158 , -2164 , -2171 , -2177 , -2183 , -2189 , -2195 , -2201 , -2207 , -2213 , -2219 , -2225 , -2231 , -2237 , -2243 , -2249 , -2255 , -2261 , -2267 , -2273 , -2279 , -2285 , -2290 , -2296 , -2302 , -2308 , -2314 , -2320 , -2326 , -2332 , -2338 , -2344 , -2349 , -2355 , -2361 , -2367 , -2373 , -2379 , -2384 , -2390 , -2396 , -2402 , -2408 , -2413 , -2419 , -2425 , -2431 , -2436 , -2442 , -2448 , -2454 , -2459 , -2465 , -2471 , -2476 , -2482 , -2488 , -2493 , -2499 , -2505 , -2510 , -2516 , -2522 , -2527 , -2533 , -2539 , -2544 , -2550 , -2555 , -2561 , -2567 , -2572 , -2578 , -2583 , -2589 , -2594 , -2600 , -2605 , -2611 , -2616 , -2622 , -2627 , -2633 , -2638 , -2644 , -2649 , -2655 , -2660 , -2666 , -2671 , -2676 , -2682 , -2687 , -2693 , -2698 , -2703 , -2709 , -2714 , -2719 , -2725 , -2730 , -2735 , -2741 , -2746 , -2751 , -2757 , -2762 , -2767 , -2772 , -2778 , -2783 , -2788 , -2793 , -2799 , -2804 , -2809 , -2814 , -2820 , -2825 , -2830 , -2835 , -2840 , -2845 , -2850 , -2856 , -2861 , -2866 , -2871 , -2876 , -2881 , -2886 , -2891 , -2896 , -2901 , -2906 , -2911 , -2916 , -2921 , -2926 , -2931 , -2936 , -2941 , -2946 , -2951 , -2956 , -2961 , -2966 , -2971 , -2976 , -2981 , -2986 , -2991 , -2996 , -3000 , -3005 , -3010 , -3015 , -3020 , -3025 , -3030 , -3034 , -3039 , -3044 , -3049 , -3053 , -3058 , -3063 , -3068 , -3072 , -3077 , -3082 , -3087 , -3091 , -3096 , -3101 , -3105 , -3110 , -3115 , -3119 , -3124 , -3129 , -3133 , -3138 , -3142 , -3147 , -3151 , -3156 , -3161 , -3165 , -3170 , -3174 , -3179 , -3183 , -3188 , -3192 , -3197 , -3201 , -3206 , -3210 , -3214 , -3219 , -3223 , -3228 , -3232 , -3236 , -3241 , -3245 , -3250 , -3254 , -3258 , -3263 , -3267 , -3271 , -3276 , -3280 , -3284 , -3288 , -3293 , -3297 , -3301 , -3305 , -3310 , -3314 , -3318 , -3322 , -3326 , -3330 , -3335 , -3339 , -3343 , -3347 , -3351 , -3355 , -3359 , -3363 , -3368 , -3372 , -3376 , -3380 , -3384 , -3388 , -3392 , -3396 , -3400 , -3404 , -3408 , -3412 , -3416 , -3420 , -3423 , -3427 , -3431 , -3435 , -3439 , -3443 , -3447 , -3451 , -3455 , -3458 , -3462 , -3466 , -3470 , -3474 , -3477 , -3481 , -3485 , -3489 , -3492 , -3496 , -3500 , -3504 , -3507 , -3511 , -3515 , -3518 , -3522 , -3526 , -3529 , -3533 , -3536 , -3540 , -3544 , -3547 , -3551 , -3554 , -3558 , -3561 , -3565 , -3568 , -3572 , -3575 , -3579 , -3582 , -3586 , -3589 , -3593 , -3596 , -3600 , -3603 , -3606 , -3610 , -3613 , -3617 , -3620 , -3623 , -3627 , -3630 , -3633 , -3636 , -3640 , -3643 , -3646 , -3650 , -3653 , -3656 , -3659 , -3662 , -3666 , -3669 , -3672 , -3675 , -3678 , -3681 , -3685 , -3688 , -3691 , -3694 , -3697 , -3700 , -3703 , -3706 , -3709 , -3712 , -3715 , -3718 , -3721 , -3724 , -3727 , -3730 , -3733 , -3736 , -3739 , -3742 , -3745 , -3748 , -3751 , -3753 , -3756 , -3759 , -3762 , -3765 , -3768 , -3770 , -3773 , -3776 , -3779 , -3781 , -3784 , -3787 , -3790 , -3792 , -3795 , -3798 , -3800 , -3803 , -3806 , -3808 , -3811 , -3814 , -3816 , -3819 , -3821 , -3824 , -3827 , -3829 , -3832 , -3834 , -3837 , -3839 , -3842 , -3844 , -3847 , -3849 , -3851 , -3854 , -3856 , -3859 , -3861 , -3863 , -3866 , -3868 , -3871 , -3873 , -3875 , -3877 , -3880 , -3882 , -3884 , -3887 , -3889 , -3891 , -3893 , -3896 , -3898 , -3900 , -3902 , -3904 , -3906 , -3909 , -3911 , -3913 , -3915 , -3917 , -3919 , -3921 , -3923 , -3925 , -3927 , -3929 , -3931 , -3933 , -3935 , -3937 , -3939 , -3941 , -3943 , -3945 , -3947 , -3949 , -3951 , -3953 , -3955 , -3956 , -3958 , -3960 , -3962 , -3964 , -3966 , -3967 , -3969 , -3971 , -3973 , -3974 , -3976 , -3978 , -3979 , -3981 , -3983 , -3984 , -3986 , -3988 , -3989 , -3991 , -3993 , -3994 , -3996 , -3997 , -3999 , -4000 , -4002 , -4003 , -4005 , -4006 , -4008 , -4009 , -4011 , -4012 , -4014 , -4015 , -4017 , -4018 , -4019 , -4021 , -4022 , -4023 , -4025 , -4026 , -4027 , -4029 , -4030 , -4031 , -4033 , -4034 , -4035 , -4036 , -4037 , -4039 , -4040 , -4041 , -4042 , -4043 , -4044 , -4046 , -4047 , -4048 , -4049 , -4050 , -4051 , -4052 , -4053 , -4054 , -4055 , -4056 , -4057 , -4058 , -4059 , -4060 , -4061 , -4062 , -4063 , -4064 , -4065 , -4065 , -4066 , -4067 , -4068 , -4069 , -4070 , -4070 , -4071 , -4072 , -4073 , -4074 , -4074 , -4075 , -4076 , -4076 , -4077 , -4078 , -4078 , -4079 , -4080 , -4080 , -4081 , -4082 , -4082 , -4083 , -4083 , -4084 , -4084 , -4085 , -4086 , -4086 , -4087 , -4087 , -4087 , -4088 , -4088 , -4089 , -4089 , -4090 , -4090 , -4090 , -4091 , -4091 , -4091 , -4092 , -4092 , -4092 , -4093 , -4093 , -4093 , -4094 , -4094 , -4094 , -4094 , -4094 , -4095 , -4095 , -4095 , -4095 , -4095 , -4095 , -4095 , -4096 , -4096 , -4096 , -4096 , -4096 , -4096 , -4096 , -4096 , -4096 , -4096 , -4096 , -4096 , -4096 , -4096 , -4096 , -4096 , -4096 , -4095 , -4095 , -4095 , -4095 , -4095 , -4095 , -4095 , -4094 , -4094 , -4094 , -4094 , -4094 , -4093 , -4093 , -4093 , -4092 , -4092 , -4092 , -4091 , -4091 , -4091 , -4090 , -4090 , -4090 , -4089 , -4089 , -4088 , -4088 , -4087 , -4087 , -4087 , -4086 , -4086 , -4085 , -4084 , -4084 , -4083 , -4083 , -4082 , -4082 , -4081 , -4080 , -4080 , -4079 , -4078 , -4078 , -4077 , -4076 , -4076 , -4075 , -4074 , -4074 , -4073 , -4072 , -4071 , -4070 , -4070 , -4069 , -4068 , -4067 , -4066 , -4065 , -4065 , -4064 , -4063 , -4062 , -4061 , -4060 , -4059 , -4058 , -4057 , -4056 , -4055 , -4054 , -4053 , -4052 , -4051 , -4050 , -4049 , -4048 , -4047 , -4046 , -4044 , -4043 , -4042 , -4041 , -4040 , -4039 , -4037 , -4036 , -4035 , -4034 , -4033 , -4031 , -4030 , -4029 , -4027 , -4026 , -4025 , -4023 , -4022 , -4021 , -4019 , -4018 , -4017 , -4015 , -4014 , -4012 , -4011 , -4009 , -4008 , -4006 , -4005 , -4003 , -4002 , -4000 , -3999 , -3997 , -3996 , -3994 , -3993 , -3991 , -3989 , -3988 , -3986 , -3984 , -3983 , -3981 , -3979 , -3978 , -3976 , -3974 , -3973 , -3971 , -3969 , -3967 , -3966 , -3964 , -3962 , -3960 , -3958 , -3956 , -3955 , -3953 , -3951 , -3949 , -3947 , -3945 , -3943 , -3941 , -3939 , -3937 , -3935 , -3933 , -3931 , -3929 , -3927 , -3925 , -3923 , -3921 , -3919 , -3917 , -3915 , -3913 , -3911 , -3909 , -3906 , -3904 , -3902 , -3900 , -3898 , -3896 , -3893 , -3891 , -3889 , -3887 , -3884 , -3882 , -3880 , -3877 , -3875 , -3873 , -3871 , -3868 , -3866 , -3863 , -3861 , -3859 , -3856 , -3854 , -3851 , -3849 , -3847 , -3844 , -3842 , -3839 , -3837 , -3834 , -3832 , -3829 , -3827 , -3824 , -3821 , -3819 , -3816 , -3814 , -3811 , -3808 , -3806 , -3803 , -3800 , -3798 , -3795 , -3792 , -3790 , -3787 , -3784 , -3781 , -3779 , -3776 , -3773 , -3770 , -3768 , -3765 , -3762 , -3759 , -3756 , -3753 , -3751 , -3748 , -3745 , -3742 , -3739 , -3736 , -3733 , -3730 , -3727 , -3724 , -3721 , -3718 , -3715 , -3712 , -3709 , -3706 , -3703 , -3700 , -3697 , -3694 , -3691 , -3688 , -3685 , -3681 , -3678 , -3675 , -3672 , -3669 , -3666 , -3662 , -3659 , -3656 , -3653 , -3650 , -3646 , -3643 , -3640 , -3636 , -3633 , -3630 , -3627 , -3623 , -3620 , -3617 , -3613 , -3610 , -3606 , -3603 , -3600 , -3596 , -3593 , -3589 , -3586 , -3582 , -3579 , -3575 , -3572 , -3568 , -3565 , -3561 , -3558 , -3554 , -3551 , -3547 , -3544 , -3540 , -3536 , -3533 , -3529 , -3526 , -3522 , -3518 , -3515 , -3511 , -3507 , -3504 , -3500 , -3496 , -3492 , -3489 , -3485 , -3481 , -3477 , -3474 , -3470 , -3466 , -3462 , -3458 , -3455 , -3451 , -3447 , -3443 , -3439 , -3435 , -3431 , -3427 , -3423 , -3420 , -3416 , -3412 , -3408 , -3404 , -3400 , -3396 , -3392 , -3388 , -3384 , -3380 , -3376 , -3372 , -3368 , -3363 , -3359 , -3355 , -3351 , -3347 , -3343 , -3339 , -3335 , -3330 , -3326 , -3322 , -3318 , -3314 , -3310 , -3305 , -3301 , -3297 , -3293 , -3288 , -3284 , -3280 , -3276 , -3271 , -3267 , -3263 , -3258 , -3254 , -3250 , -3245 , -3241 , -3236 , -3232 , -3228 , -3223 , -3219 , -3214 , -3210 , -3206 , -3201 , -3197 , -3192 , -3188 , -3183 , -3179 , -3174 , -3170 , -3165 , -3161 , -3156 , -3151 , -3147 , -3142 , -3138 , -3133 , -3129 , -3124 , -3119 , -3115 , -3110 , -3105 , -3101 , -3096 , -3091 , -3087 , -3082 , -3077 , -3072 , -3068 , -3063 , -3058 , -3053 , -3049 , -3044 , -3039 , -3034 , -3030 , -3025 , -3020 , -3015 , -3010 , -3005 , -3000 , -2996 , -2991 , -2986 , -2981 , -2976 , -2971 , -2966 , -2961 , -2956 , -2951 , -2946 , -2941 , -2936 , -2931 , -2926 , -2921 , -2916 , -2911 , -2906 , -2901 , -2896 , -2891 , -2886 , -2881 , -2876 , -2871 , -2866 , -2861 , -2856 , -2850 , -2845 , -2840 , -2835 , -2830 , -2825 , -2820 , -2814 , -2809 , -2804 , -2799 , -2793 , -2788 , -2783 , -2778 , -2772 , -2767 , -2762 , -2757 , -2751 , -2746 , -2741 , -2735 , -2730 , -2725 , -2719 , -2714 , -2709 , -2703 , -2698 , -2693 , -2687 , -2682 , -2676 , -2671 , -2666 , -2660 , -2655 , -2649 , -2644 , -2638 , -2633 , -2627 , -2622 , -2616 , -2611 , -2605 , -2600 , -2594 , -2589 , -2583 , -2578 , -2572 , -2567 , -2561 , -2555 , -2550 , -2544 , -2539 , -2533 , -2527 , -2522 , -2516 , -2510 , -2505 , -2499 , -2493 , -2488 , -2482 , -2476 , -2471 , -2465 , -2459 , -2454 , -2448 , -2442 , -2436 , -2431 , -2425 , -2419 , -2413 , -2408 , -2402 , -2396 , -2390 , -2384 , -2379 , -2373 , -2367 , -2361 , -2355 , -2349 , -2344 , -2338 , -2332 , -2326 , -2320 , -2314 , -2308 , -2302 , -2296 , -2290 , -2285 , -2279 , -2273 , -2267 , -2261 , -2255 , -2249 , -2243 , -2237 , -2231 , -2225 , -2219 , -2213 , -2207 , -2201 , -2195 , -2189 , -2183 , -2177 , -2171 , -2164 , -2158 , -2152 , -2146 , -2140 , -2134 , -2128 , -2122 , -2116 , -2110 , -2103 , -2097 , -2091 , -2085 , -2079 , -2073 , -2067 , -2060 , -2054 , -2048 , -2042 , -2036 , -2029 , -2023 , -2017 , -2011 , -2005 , -1998 , -1992 , -1986 , -1980 , -1973 , -1967 , -1961 , -1954 , -1948 , -1942 , -1936 , -1929 , -1923 , -1917 , -1910 , -1904 , -1898 , -1891 , -1885 , -1879 , -1872 , -1866 , -1860 , -1853 , -1847 , -1840 , -1834 , -1828 , -1821 , -1815 , -1808 , -1802 , -1796 , -1789 , -1783 , -1776 , -1770 , -1763 , -1757 , -1750 , -1744 , -1738 , -1731 , -1725 , -1718 , -1712 , -1705 , -1699 , -1692 , -1686 , -1679 , -1673 , -1666 , -1659 , -1653 , -1646 , -1640 , -1633 , -1627 , -1620 , -1614 , -1607 , -1600 , -1594 , -1587 , -1581 , -1574 , -1567 , -1561 , -1554 , -1548 , -1541 , -1534 , -1528 , -1521 , -1514 , -1508 , -1501 , -1495 , -1488 , -1481 , -1475 , -1468 , -1461 , -1455 , -1448 , -1441 , -1434 , -1428 , -1421 , -1414 , -1408 , -1401 , -1394 , -1387 , -1381 , -1374 , -1367 , -1361 , -1354 , -1347 , -1340 , -1334 , -1327 , -1320 , -1313 , -1306 , -1300 , -1293 , -1286 , -1279 , -1273 , -1266 , -1259 , -1252 , -1245 , -1239 , -1232 , -1225 , -1218 , -1211 , -1204 , -1198 , -1191 , -1184 , -1177 , -1170 , -1163 , -1156 , -1150 , -1143 , -1136 , -1129 , -1122 , -1115 , -1108 , -1101 , -1095 , -1088 , -1081 , -1074 , -1067 , -1060 , -1053 , -1046 , -1039 , -1032 , -1026 , -1019 , -1012 , -1005 , -998 , -991 , -984 , -977 , -970 , -963 , -956 , -949 , -942 , -935 , -928 , -921 , -914 , -907 , -900 , -894 , -887 , -880 , -873 , -866 , -859 , -852 , -845 , -838 , -831 , -824 , -817 , -810 , -803 , -796 , -789 , -782 , -775 , -768 , -760 , -753 , -746 , -739 , -732 , -725 , -718 , -711 , -704 , -697 , -690 , -683 , -676 , -669 , -662 , -655 , -648 , -641 , -634 , -627 , -620 , -612 , -605 , -598 , -591 , -584 , -577 , -570 , -563 , -556 , -549 , -542 , -535 , -528 , -520 , -513 , -506 , -499 , -492 , -485 , -478 , -471 , -464 , -457 , -449 , -442 , -435 , -428 , -421 , -414 , -407 , -400 , -393 , -385 , -378 , -371 , -364 , -357 , -350 , -343 , -336 , -328 , -321 , -314 , -307 , -300 , -293 , -286 , -279 , -271 , -264 , -257 , -250 , -243 , -236 , -229 , -222 , -214 , -207 , -200 , -193 , -186 , -179 , -172 , -164 , -157 , -150 , -143 , -136 , -129 , -122 , -114 , -107 , -100 ,  -93 ,  -86 ,  -79 ,  -71 ,  -64 ,  -57 ,  -50 ,  -43 ,  -36 ,  -29 ,  -21 ,  -14 ,   -7 ,   -0 ,    7 ,   14 ,   21 ,   29 ,   36 ,   43 ,   50 ,   57 ,   64 ,   71 ,   79 ,   86 ,   93 ,  100 ,  107 ,  114 ,  122 ,  129 ,  136 ,  143 ,  150 ,  157 ,  164 ,  172 ,  179 ,  186 ,  193 ,  200 ,  207 ,  214 ,  222 ,  229 ,  236 ,  243 ,  250 ,  257 ,  264 ,  271 ,  279 ,  286 ,  293 ,  300 ,  307 ,  314 ,  321 ,  328 ,  336 ,  343 ,  350 ,  357 ,  364 ,  371 ,  378 ,  385 ,  393 ,  400 ,  407 ,  414 ,  421 ,  428 ,  435 ,  442 ,  449 ,  457 ,  464 ,  471 ,  478 ,  485 ,  492 ,  499 ,  506 ,  513 ,  520 ,  528 ,  535 ,  542 ,  549 ,  556 ,  563 ,  570 ,  577 ,  584 ,  591 ,  598 ,  605 ,  612 ,  620 ,  627 ,  634 ,  641 ,  648 ,  655 ,  662 ,  669 ,  676 ,  683 ,  690 ,  697 ,  704 ,  711 ,  718 ,  725 ,  732 ,  739 ,  746 ,  753 ,  760 ,  768 ,  775 ,  782 ,  789 ,  796 ,  803 ,  810 ,  817 ,  824 ,  831 ,  838 ,  845 ,  852 ,  859 ,  866 ,  873 ,  880 ,  887 ,  894 ,  900 ,  907 ,  914 ,  921 ,  928 ,  935 ,  942 ,  949 ,  956 ,  963 ,  970 ,  977 ,  984 ,  991 ,  998 , 1005 , 1012 , 1019 , 1026 , 1032 , 1039 , 1046 , 1053 , 1060 , 1067 , 1074 , 1081 , 1088 , 1095 , 1101 , 1108 , 1115 , 1122 , 1129 , 1136 , 1143 , 1150 , 1156 , 1163 , 1170 , 1177 , 1184 , 1191 , 1198 , 1204 , 1211 , 1218 , 1225 , 1232 , 1239 , 1245 , 1252 , 1259 , 1266 , 1273 , 1279 , 1286 , 1293 , 1300 , 1306 , 1313 , 1320 , 1327 , 1334 , 1340 , 1347 , 1354 , 1361 , 1367 , 1374 , 1381 , 1387 , 1394 , 1401 , 1408 , 1414 , 1421 , 1428 , 1434 , 1441 , 1448 , 1455 , 1461 , 1468 , 1475 , 1481 , 1488 , 1495 , 1501 , 1508 , 1514 , 1521 , 1528 , 1534 , 1541 , 1548 , 1554 , 1561 , 1567 , 1574 , 1581 , 1587 , 1594 , 1600 , 1607 , 1614 , 1620 , 1627 , 1633 , 1640 , 1646 , 1653 , 1659 , 1666 , 1673 , 1679 , 1686 , 1692 , 1699 , 1705 , 1712 , 1718 , 1725 , 1731 , 1738 , 1744 , 1750 , 1757 , 1763 , 1770 , 1776 , 1783 , 1789 , 1796 , 1802 , 1808 , 1815 , 1821 , 1828 , 1834 , 1840 , 1847 , 1853 , 1860 , 1866 , 1872 , 1879 , 1885 , 1891 , 1898 , 1904 , 1910 , 1917 , 1923 , 1929 , 1936 , 1942 , 1948 , 1954 , 1961 , 1967 , 1973 , 1980 , 1986 , 1992 , 1998 , 2005 , 2011 , 2017 , 2023 , 2029 , 2036 , 2042 , 2048 , 2054 , 2060 , 2067 , 2073 , 2079 , 2085 , 2091 , 2097 , 2103 , 2110 , 2116 , 2122 , 2128 , 2134 , 2140 , 2146 , 2152 , 2158 , 2164 , 2171 , 2177 , 2183 , 2189 , 2195 , 2201 , 2207 , 2213 , 2219 , 2225 , 2231 , 2237 , 2243 , 2249 , 2255 , 2261 , 2267 , 2273 , 2279 , 2285 , 2290 , 2296 , 2302 , 2308 , 2314 , 2320 , 2326 , 2332 , 2338 , 2344 , 2349 , 2355 , 2361 , 2367 , 2373 , 2379 , 2384 , 2390 , 2396 , 2402 , 2408 , 2413 , 2419 , 2425 , 2431 , 2436 , 2442 , 2448 , 2454 , 2459 , 2465 , 2471 , 2476 , 2482 , 2488 , 2493 , 2499 , 2505 , 2510 , 2516 , 2522 , 2527 , 2533 , 2539 , 2544 , 2550 , 2555 , 2561 , 2567 , 2572 , 2578 , 2583 , 2589 , 2594 , 2600 , 2605 , 2611 , 2616 , 2622 , 2627 , 2633 , 2638 , 2644 , 2649 , 2655 , 2660 , 2666 , 2671 , 2676 , 2682 , 2687 , 2693 , 2698 , 2703 , 2709 , 2714 , 2719 , 2725 , 2730 , 2735 , 2741 , 2746 , 2751 , 2757 , 2762 , 2767 , 2772 , 2778 , 2783 , 2788 , 2793 , 2799 , 2804 , 2809 , 2814 , 2820 , 2825 , 2830 , 2835 , 2840 , 2845 , 2850 , 2856 , 2861 , 2866 , 2871 , 2876 , 2881 , 2886 , 2891 ,
                             };

const int cos_lookup[3600] = {2896 , 2891 , 2886 , 2881 , 2876 , 2871 , 2866 , 2861 , 2856 , 2850 , 2845 , 2840 , 2835 , 2830 , 2825 , 2820 , 2814 , 2809 , 2804 , 2799 , 2793 , 2788 , 2783 , 2778 , 2772 , 2767 , 2762 , 2757 , 2751 , 2746 , 2741 , 2735 , 2730 , 2725 , 2719 , 2714 , 2709 , 2703 , 2698 , 2693 , 2687 , 2682 , 2676 , 2671 , 2666 , 2660 , 2655 , 2649 , 2644 , 2638 , 2633 , 2627 , 2622 , 2616 , 2611 , 2605 , 2600 , 2594 , 2589 , 2583 , 2578 , 2572 , 2567 , 2561 , 2555 , 2550 , 2544 , 2539 , 2533 , 2527 , 2522 , 2516 , 2510 , 2505 , 2499 , 2493 , 2488 , 2482 , 2476 , 2471 , 2465 , 2459 , 2454 , 2448 , 2442 , 2436 , 2431 , 2425 , 2419 , 2413 , 2408 , 2402 , 2396 , 2390 , 2384 , 2379 , 2373 , 2367 , 2361 , 2355 , 2349 , 2344 , 2338 , 2332 , 2326 , 2320 , 2314 , 2308 , 2302 , 2296 , 2290 , 2285 , 2279 , 2273 , 2267 , 2261 , 2255 , 2249 , 2243 , 2237 , 2231 , 2225 , 2219 , 2213 , 2207 , 2201 , 2195 , 2189 , 2183 , 2177 , 2171 , 2164 , 2158 , 2152 , 2146 , 2140 , 2134 , 2128 , 2122 , 2116 , 2110 , 2103 , 2097 , 2091 , 2085 , 2079 , 2073 , 2067 , 2060 , 2054 , 2048 , 2042 , 2036 , 2029 , 2023 , 2017 , 2011 , 2005 , 1998 , 1992 , 1986 , 1980 , 1973 , 1967 , 1961 , 1954 , 1948 , 1942 , 1936 , 1929 , 1923 , 1917 , 1910 , 1904 , 1898 , 1891 , 1885 , 1879 , 1872 , 1866 , 1860 , 1853 , 1847 , 1840 , 1834 , 1828 , 1821 , 1815 , 1808 , 1802 , 1796 , 1789 , 1783 , 1776 , 1770 , 1763 , 1757 , 1750 , 1744 , 1738 , 1731 , 1725 , 1718 , 1712 , 1705 , 1699 , 1692 , 1686 , 1679 , 1673 , 1666 , 1659 , 1653 , 1646 , 1640 , 1633 , 1627 , 1620 , 1614 , 1607 , 1600 , 1594 , 1587 , 1581 , 1574 , 1567 , 1561 , 1554 , 1548 , 1541 , 1534 , 1528 , 1521 , 1514 , 1508 , 1501 , 1495 , 1488 , 1481 , 1475 , 1468 , 1461 , 1455 , 1448 , 1441 , 1434 , 1428 , 1421 , 1414 , 1408 , 1401 , 1394 , 1387 , 1381 , 1374 , 1367 , 1361 , 1354 , 1347 , 1340 , 1334 , 1327 , 1320 , 1313 , 1306 , 1300 , 1293 , 1286 , 1279 , 1273 , 1266 , 1259 , 1252 , 1245 , 1239 , 1232 , 1225 , 1218 , 1211 , 1204 , 1198 , 1191 , 1184 , 1177 , 1170 , 1163 , 1156 , 1150 , 1143 , 1136 , 1129 , 1122 , 1115 , 1108 , 1101 , 1095 , 1088 , 1081 , 1074 , 1067 , 1060 , 1053 , 1046 , 1039 , 1032 , 1026 , 1019 , 1012 , 1005 ,  998 ,  991 ,  984 ,  977 ,  970 ,  963 ,  956 ,  949 ,  942 ,  935 ,  928 ,  921 ,  914 ,  907 ,  900 ,  894 ,  887 ,  880 ,  873 ,  866 ,  859 ,  852 ,  845 ,  838 ,  831 ,  824 ,  817 ,  810 ,  803 ,  796 ,  789 ,  782 ,  775 ,  768 ,  760 ,  753 ,  746 ,  739 ,  732 ,  725 ,  718 ,  711 ,  704 ,  697 ,  690 ,  683 ,  676 ,  669 ,  662 ,  655 ,  648 ,  641 ,  634 ,  627 ,  620 ,  612 ,  605 ,  598 ,  591 ,  584 ,  577 ,  570 ,  563 ,  556 ,  549 ,  542 ,  535 ,  528 ,  520 ,  513 ,  506 ,  499 ,  492 ,  485 ,  478 ,  471 ,  464 ,  457 ,  449 ,  442 ,  435 ,  428 ,  421 ,  414 ,  407 ,  400 ,  393 ,  385 ,  378 ,  371 ,  364 ,  357 ,  350 ,  343 ,  336 ,  328 ,  321 ,  314 ,  307 ,  300 ,  293 ,  286 ,  279 ,  271 ,  264 ,  257 ,  250 ,  243 ,  236 ,  229 ,  222 ,  214 ,  207 ,  200 ,  193 ,  186 ,  179 ,  172 ,  164 ,  157 ,  150 ,  143 ,  136 ,  129 ,  122 ,  114 ,  107 ,  100 ,   93 ,   86 ,   79 ,   71 ,   64 ,   57 ,   50 ,   43 ,   36 ,   29 ,   21 ,   14 ,    7 ,    0 ,   -7 ,  -14 ,  -21 ,  -29 ,  -36 ,  -43 ,  -50 ,  -57 ,  -64 ,  -71 ,  -79 ,  -86 ,  -93 , -100 , -107 , -114 , -122 , -129 , -136 , -143 , -150 , -157 , -164 , -172 , -179 , -186 , -193 , -200 , -207 , -214 , -222 , -229 , -236 , -243 , -250 , -257 , -264 , -271 , -279 , -286 , -293 , -300 , -307 , -314 , -321 , -328 , -336 , -343 , -350 , -357 , -364 , -371 , -378 , -385 , -393 , -400 , -407 , -414 , -421 , -428 , -435 , -442 , -449 , -457 , -464 , -471 , -478 , -485 , -492 , -499 , -506 , -513 , -520 , -528 , -535 , -542 , -549 , -556 , -563 , -570 , -577 , -584 , -591 , -598 , -605 , -612 , -620 , -627 , -634 , -641 , -648 , -655 , -662 , -669 , -676 , -683 , -690 , -697 , -704 , -711 , -718 , -725 , -732 , -739 , -746 , -753 , -760 , -768 , -775 , -782 , -789 , -796 , -803 , -810 , -817 , -824 , -831 , -838 , -845 , -852 , -859 , -866 , -873 , -880 , -887 , -894 , -900 , -907 , -914 , -921 , -928 , -935 , -942 , -949 , -956 , -963 , -970 , -977 , -984 , -991 , -998 , -1005 , -1012 , -1019 , -1026 , -1032 , -1039 , -1046 , -1053 , -1060 , -1067 , -1074 , -1081 , -1088 , -1095 , -1101 , -1108 , -1115 , -1122 , -1129 , -1136 , -1143 , -1150 , -1156 , -1163 , -1170 , -1177 , -1184 , -1191 , -1198 , -1204 , -1211 , -1218 , -1225 , -1232 , -1239 , -1245 , -1252 , -1259 , -1266 , -1273 , -1279 , -1286 , -1293 , -1300 , -1306 , -1313 , -1320 , -1327 , -1334 , -1340 , -1347 , -1354 , -1361 , -1367 , -1374 , -1381 , -1387 , -1394 , -1401 , -1408 , -1414 , -1421 , -1428 , -1434 , -1441 , -1448 , -1455 , -1461 , -1468 , -1475 , -1481 , -1488 , -1495 , -1501 , -1508 , -1514 , -1521 , -1528 , -1534 , -1541 , -1548 , -1554 , -1561 , -1567 , -1574 , -1581 , -1587 , -1594 , -1600 , -1607 , -1614 , -1620 , -1627 , -1633 , -1640 , -1646 , -1653 , -1659 , -1666 , -1673 , -1679 , -1686 , -1692 , -1699 , -1705 , -1712 , -1718 , -1725 , -1731 , -1738 , -1744 , -1750 , -1757 , -1763 , -1770 , -1776 , -1783 , -1789 , -1796 , -1802 , -1808 , -1815 , -1821 , -1828 , -1834 , -1840 , -1847 , -1853 , -1860 , -1866 , -1872 , -1879 , -1885 , -1891 , -1898 , -1904 , -1910 , -1917 , -1923 , -1929 , -1936 , -1942 , -1948 , -1954 , -1961 , -1967 , -1973 , -1980 , -1986 , -1992 , -1998 , -2005 , -2011 , -2017 , -2023 , -2029 , -2036 , -2042 , -2048 , -2054 , -2060 , -2067 , -2073 , -2079 , -2085 , -2091 , -2097 , -2103 , -2110 , -2116 , -2122 , -2128 , -2134 , -2140 , -2146 , -2152 , -2158 , -2164 , -2171 , -2177 , -2183 , -2189 , -2195 , -2201 , -2207 , -2213 , -2219 , -2225 , -2231 , -2237 , -2243 , -2249 , -2255 , -2261 , -2267 , -2273 , -2279 , -2285 , -2290 , -2296 , -2302 , -2308 , -2314 , -2320 , -2326 , -2332 , -2338 , -2344 , -2349 , -2355 , -2361 , -2367 , -2373 , -2379 , -2384 , -2390 , -2396 , -2402 , -2408 , -2413 , -2419 , -2425 , -2431 , -2436 , -2442 , -2448 , -2454 , -2459 , -2465 , -2471 , -2476 , -2482 , -2488 , -2493 , -2499 , -2505 , -2510 , -2516 , -2522 , -2527 , -2533 , -2539 , -2544 , -2550 , -2555 , -2561 , -2567 , -2572 , -2578 , -2583 , -2589 , -2594 , -2600 , -2605 , -2611 , -2616 , -2622 , -2627 , -2633 , -2638 , -2644 , -2649 , -2655 , -2660 , -2666 , -2671 , -2676 , -2682 , -2687 , -2693 , -2698 , -2703 , -2709 , -2714 , -2719 , -2725 , -2730 , -2735 , -2741 , -2746 , -2751 , -2757 , -2762 , -2767 , -2772 , -2778 , -2783 , -2788 , -2793 , -2799 , -2804 , -2809 , -2814 , -2820 , -2825 , -2830 , -2835 , -2840 , -2845 , -2850 , -2856 , -2861 , -2866 , -2871 , -2876 , -2881 , -2886 , -2891 , -2896 , -2901 , -2906 , -2911 , -2916 , -2921 , -2926 , -2931 , -2936 , -2941 , -2946 , -2951 , -2956 , -2961 , -2966 , -2971 , -2976 , -2981 , -2986 , -2991 , -2996 , -3000 , -3005 , -3010 , -3015 , -3020 , -3025 , -3030 , -3034 , -3039 , -3044 , -3049 , -3053 , -3058 , -3063 , -3068 , -3072 , -3077 , -3082 , -3087 , -3091 , -3096 , -3101 , -3105 , -3110 , -3115 , -3119 , -3124 , -3129 , -3133 , -3138 , -3142 , -3147 , -3151 , -3156 , -3161 , -3165 , -3170 , -3174 , -3179 , -3183 , -3188 , -3192 , -3197 , -3201 , -3206 , -3210 , -3214 , -3219 , -3223 , -3228 , -3232 , -3236 , -3241 , -3245 , -3250 , -3254 , -3258 , -3263 , -3267 , -3271 , -3276 , -3280 , -3284 , -3288 , -3293 , -3297 , -3301 , -3305 , -3310 , -3314 , -3318 , -3322 , -3326 , -3330 , -3335 , -3339 , -3343 , -3347 , -3351 , -3355 , -3359 , -3363 , -3368 , -3372 , -3376 , -3380 , -3384 , -3388 , -3392 , -3396 , -3400 , -3404 , -3408 , -3412 , -3416 , -3420 , -3423 , -3427 , -3431 , -3435 , -3439 , -3443 , -3447 , -3451 , -3455 , -3458 , -3462 , -3466 , -3470 , -3474 , -3477 , -3481 , -3485 , -3489 , -3492 , -3496 , -3500 , -3504 , -3507 , -3511 , -3515 , -3518 , -3522 , -3526 , -3529 , -3533 , -3536 , -3540 , -3544 , -3547 , -3551 , -3554 , -3558 , -3561 , -3565 , -3568 , -3572 , -3575 , -3579 , -3582 , -3586 , -3589 , -3593 , -3596 , -3600 , -3603 , -3606 , -3610 , -3613 , -3617 , -3620 , -3623 , -3627 , -3630 , -3633 , -3636 , -3640 , -3643 , -3646 , -3650 , -3653 , -3656 , -3659 , -3662 , -3666 , -3669 , -3672 , -3675 , -3678 , -3681 , -3685 , -3688 , -3691 , -3694 , -3697 , -3700 , -3703 , -3706 , -3709 , -3712 , -3715 , -3718 , -3721 , -3724 , -3727 , -3730 , -3733 , -3736 , -3739 , -3742 , -3745 , -3748 , -3751 , -3753 , -3756 , -3759 , -3762 , -3765 , -3768 , -3770 , -3773 , -3776 , -3779 , -3781 , -3784 , -3787 , -3790 , -3792 , -3795 , -3798 , -3800 , -3803 , -3806 , -3808 , -3811 , -3814 , -3816 , -3819 , -3821 , -3824 , -3827 , -3829 , -3832 , -3834 , -3837 , -3839 , -3842 , -3844 , -3847 , -3849 , -3851 , -3854 , -3856 , -3859 , -3861 , -3863 , -3866 , -3868 , -3871 , -3873 , -3875 , -3877 , -3880 , -3882 , -3884 , -3887 , -3889 , -3891 , -3893 , -3896 , -3898 , -3900 , -3902 , -3904 , -3906 , -3909 , -3911 , -3913 , -3915 , -3917 , -3919 , -3921 , -3923 , -3925 , -3927 , -3929 , -3931 , -3933 , -3935 , -3937 , -3939 , -3941 , -3943 , -3945 , -3947 , -3949 , -3951 , -3953 , -3955 , -3956 , -3958 , -3960 , -3962 , -3964 , -3966 , -3967 , -3969 , -3971 , -3973 , -3974 , -3976 , -3978 , -3979 , -3981 , -3983 , -3984 , -3986 , -3988 , -3989 , -3991 , -3993 , -3994 , -3996 , -3997 , -3999 , -4000 , -4002 , -4003 , -4005 , -4006 , -4008 , -4009 , -4011 , -4012 , -4014 , -4015 , -4017 , -4018 , -4019 , -4021 , -4022 , -4023 , -4025 , -4026 , -4027 , -4029 , -4030 , -4031 , -4033 , -4034 , -4035 , -4036 , -4037 , -4039 , -4040 , -4041 , -4042 , -4043 , -4044 , -4046 , -4047 , -4048 , -4049 , -4050 , -4051 , -4052 , -4053 , -4054 , -4055 , -4056 , -4057 , -4058 , -4059 , -4060 , -4061 , -4062 , -4063 , -4064 , -4065 , -4065 , -4066 , -4067 , -4068 , -4069 , -4070 , -4070 , -4071 , -4072 , -4073 , -4074 , -4074 , -4075 , -4076 , -4076 , -4077 , -4078 , -4078 , -4079 , -4080 , -4080 , -4081 , -4082 , -4082 , -4083 , -4083 , -4084 , -4084 , -4085 , -4086 , -4086 , -4087 , -4087 , -4087 , -4088 , -4088 , -4089 , -4089 , -4090 , -4090 , -4090 , -4091 , -4091 , -4091 , -4092 , -4092 , -4092 , -4093 , -4093 , -4093 , -4094 , -4094 , -4094 , -4094 , -4094 , -4095 , -4095 , -4095 , -4095 , -4095 , -4095 , -4095 , -4096 , -4096 , -4096 , -4096 , -4096 , -4096 , -4096 , -4096 , -4096 , -4096 , -4096 , -4096 , -4096 , -4096 , -4096 , -4096 , -4096 , -4095 , -4095 , -4095 , -4095 , -4095 , -4095 , -4095 , -4094 , -4094 , -4094 , -4094 , -4094 , -4093 , -4093 , -4093 , -4092 , -4092 , -4092 , -4091 , -4091 , -4091 , -4090 , -4090 , -4090 , -4089 , -4089 , -4088 , -4088 , -4087 , -4087 , -4087 , -4086 , -4086 , -4085 , -4084 , -4084 , -4083 , -4083 , -4082 , -4082 , -4081 , -4080 , -4080 , -4079 , -4078 , -4078 , -4077 , -4076 , -4076 , -4075 , -4074 , -4074 , -4073 , -4072 , -4071 , -4070 , -4070 , -4069 , -4068 , -4067 , -4066 , -4065 , -4065 , -4064 , -4063 , -4062 , -4061 , -4060 , -4059 , -4058 , -4057 , -4056 , -4055 , -4054 , -4053 , -4052 , -4051 , -4050 , -4049 , -4048 , -4047 , -4046 , -4044 , -4043 , -4042 , -4041 , -4040 , -4039 , -4037 , -4036 , -4035 , -4034 , -4033 , -4031 , -4030 , -4029 , -4027 , -4026 , -4025 , -4023 , -4022 , -4021 , -4019 , -4018 , -4017 , -4015 , -4014 , -4012 , -4011 , -4009 , -4008 , -4006 , -4005 , -4003 , -4002 , -4000 , -3999 , -3997 , -3996 , -3994 , -3993 , -3991 , -3989 , -3988 , -3986 , -3984 , -3983 , -3981 , -3979 , -3978 , -3976 , -3974 , -3973 , -3971 , -3969 , -3967 , -3966 , -3964 , -3962 , -3960 , -3958 , -3956 , -3955 , -3953 , -3951 , -3949 , -3947 , -3945 , -3943 , -3941 , -3939 , -3937 , -3935 , -3933 , -3931 , -3929 , -3927 , -3925 , -3923 , -3921 , -3919 , -3917 , -3915 , -3913 , -3911 , -3909 , -3906 , -3904 , -3902 , -3900 , -3898 , -3896 , -3893 , -3891 , -3889 , -3887 , -3884 , -3882 , -3880 , -3877 , -3875 , -3873 , -3871 , -3868 , -3866 , -3863 , -3861 , -3859 , -3856 , -3854 , -3851 , -3849 , -3847 , -3844 , -3842 , -3839 , -3837 , -3834 , -3832 , -3829 , -3827 , -3824 , -3821 , -3819 , -3816 , -3814 , -3811 , -3808 , -3806 , -3803 , -3800 , -3798 , -3795 , -3792 , -3790 , -3787 , -3784 , -3781 , -3779 , -3776 , -3773 , -3770 , -3768 , -3765 , -3762 , -3759 , -3756 , -3753 , -3751 , -3748 , -3745 , -3742 , -3739 , -3736 , -3733 , -3730 , -3727 , -3724 , -3721 , -3718 , -3715 , -3712 , -3709 , -3706 , -3703 , -3700 , -3697 , -3694 , -3691 , -3688 , -3685 , -3681 , -3678 , -3675 , -3672 , -3669 , -3666 , -3662 , -3659 , -3656 , -3653 , -3650 , -3646 , -3643 , -3640 , -3636 , -3633 , -3630 , -3627 , -3623 , -3620 , -3617 , -3613 , -3610 , -3606 , -3603 , -3600 , -3596 , -3593 , -3589 , -3586 , -3582 , -3579 , -3575 , -3572 , -3568 , -3565 , -3561 , -3558 , -3554 , -3551 , -3547 , -3544 , -3540 , -3536 , -3533 , -3529 , -3526 , -3522 , -3518 , -3515 , -3511 , -3507 , -3504 , -3500 , -3496 , -3492 , -3489 , -3485 , -3481 , -3477 , -3474 , -3470 , -3466 , -3462 , -3458 , -3455 , -3451 , -3447 , -3443 , -3439 , -3435 , -3431 , -3427 , -3423 , -3420 , -3416 , -3412 , -3408 , -3404 , -3400 , -3396 , -3392 , -3388 , -3384 , -3380 , -3376 , -3372 , -3368 , -3363 , -3359 , -3355 , -3351 , -3347 , -3343 , -3339 , -3335 , -3330 , -3326 , -3322 , -3318 , -3314 , -3310 , -3305 , -3301 , -3297 , -3293 , -3288 , -3284 , -3280 , -3276 , -3271 , -3267 , -3263 , -3258 , -3254 , -3250 , -3245 , -3241 , -3236 , -3232 , -3228 , -3223 , -3219 , -3214 , -3210 , -3206 , -3201 , -3197 , -3192 , -3188 , -3183 , -3179 , -3174 , -3170 , -3165 , -3161 , -3156 , -3151 , -3147 , -3142 , -3138 , -3133 , -3129 , -3124 , -3119 , -3115 , -3110 , -3105 , -3101 , -3096 , -3091 , -3087 , -3082 , -3077 , -3072 , -3068 , -3063 , -3058 , -3053 , -3049 , -3044 , -3039 , -3034 , -3030 , -3025 , -3020 , -3015 , -3010 , -3005 , -3000 , -2996 , -2991 , -2986 , -2981 , -2976 , -2971 , -2966 , -2961 , -2956 , -2951 , -2946 , -2941 , -2936 , -2931 , -2926 , -2921 , -2916 , -2911 , -2906 , -2901 , -2896 , -2891 , -2886 , -2881 , -2876 , -2871 , -2866 , -2861 , -2856 , -2850 , -2845 , -2840 , -2835 , -2830 , -2825 , -2820 , -2814 , -2809 , -2804 , -2799 , -2793 , -2788 , -2783 , -2778 , -2772 , -2767 , -2762 , -2757 , -2751 , -2746 , -2741 , -2735 , -2730 , -2725 , -2719 , -2714 , -2709 , -2703 , -2698 , -2693 , -2687 , -2682 , -2676 , -2671 , -2666 , -2660 , -2655 , -2649 , -2644 , -2638 , -2633 , -2627 , -2622 , -2616 , -2611 , -2605 , -2600 , -2594 , -2589 , -2583 , -2578 , -2572 , -2567 , -2561 , -2555 , -2550 , -2544 , -2539 , -2533 , -2527 , -2522 , -2516 , -2510 , -2505 , -2499 , -2493 , -2488 , -2482 , -2476 , -2471 , -2465 , -2459 , -2454 , -2448 , -2442 , -2436 , -2431 , -2425 , -2419 , -2413 , -2408 , -2402 , -2396 , -2390 , -2384 , -2379 , -2373 , -2367 , -2361 , -2355 , -2349 , -2344 , -2338 , -2332 , -2326 , -2320 , -2314 , -2308 , -2302 , -2296 , -2290 , -2285 , -2279 , -2273 , -2267 , -2261 , -2255 , -2249 , -2243 , -2237 , -2231 , -2225 , -2219 , -2213 , -2207 , -2201 , -2195 , -2189 , -2183 , -2177 , -2171 , -2164 , -2158 , -2152 , -2146 , -2140 , -2134 , -2128 , -2122 , -2116 , -2110 , -2103 , -2097 , -2091 , -2085 , -2079 , -2073 , -2067 , -2060 , -2054 , -2048 , -2042 , -2036 , -2029 , -2023 , -2017 , -2011 , -2005 , -1998 , -1992 , -1986 , -1980 , -1973 , -1967 , -1961 , -1954 , -1948 , -1942 , -1936 , -1929 , -1923 , -1917 , -1910 , -1904 , -1898 , -1891 , -1885 , -1879 , -1872 , -1866 , -1860 , -1853 , -1847 , -1840 , -1834 , -1828 , -1821 , -1815 , -1808 , -1802 , -1796 , -1789 , -1783 , -1776 , -1770 , -1763 , -1757 , -1750 , -1744 , -1738 , -1731 , -1725 , -1718 , -1712 , -1705 , -1699 , -1692 , -1686 , -1679 , -1673 , -1666 , -1659 , -1653 , -1646 , -1640 , -1633 , -1627 , -1620 , -1614 , -1607 , -1600 , -1594 , -1587 , -1581 , -1574 , -1567 , -1561 , -1554 , -1548 , -1541 , -1534 , -1528 , -1521 , -1514 , -1508 , -1501 , -1495 , -1488 , -1481 , -1475 , -1468 , -1461 , -1455 , -1448 , -1441 , -1434 , -1428 , -1421 , -1414 , -1408 , -1401 , -1394 , -1387 , -1381 , -1374 , -1367 , -1361 , -1354 , -1347 , -1340 , -1334 , -1327 , -1320 , -1313 , -1306 , -1300 , -1293 , -1286 , -1279 , -1273 , -1266 , -1259 , -1252 , -1245 , -1239 , -1232 , -1225 , -1218 , -1211 , -1204 , -1198 , -1191 , -1184 , -1177 , -1170 , -1163 , -1156 , -1150 , -1143 , -1136 , -1129 , -1122 , -1115 , -1108 , -1101 , -1095 , -1088 , -1081 , -1074 , -1067 , -1060 , -1053 , -1046 , -1039 , -1032 , -1026 , -1019 , -1012 , -1005 , -998 , -991 , -984 , -977 , -970 , -963 , -956 , -949 , -942 , -935 , -928 , -921 , -914 , -907 , -900 , -894 , -887 , -880 , -873 , -866 , -859 , -852 , -845 , -838 , -831 , -824 , -817 , -810 , -803 , -796 , -789 , -782 , -775 , -768 , -760 , -753 , -746 , -739 , -732 , -725 , -718 , -711 , -704 , -697 , -690 , -683 , -676 , -669 , -662 , -655 , -648 , -641 , -634 , -627 , -620 , -612 , -605 , -598 , -591 , -584 , -577 , -570 , -563 , -556 , -549 , -542 , -535 , -528 , -520 , -513 , -506 , -499 , -492 , -485 , -478 , -471 , -464 , -457 , -449 , -442 , -435 , -428 , -421 , -414 , -407 , -400 , -393 , -385 , -378 , -371 , -364 , -357 , -350 , -343 , -336 , -328 , -321 , -314 , -307 , -300 , -293 , -286 , -279 , -271 , -264 , -257 , -250 , -243 , -236 , -229 , -222 , -214 , -207 , -200 , -193 , -186 , -179 , -172 , -164 , -157 , -150 , -143 , -136 , -129 , -122 , -114 , -107 , -100 ,  -93 ,  -86 ,  -79 ,  -71 ,  -64 ,  -57 ,  -50 ,  -43 ,  -36 ,  -29 ,  -21 ,  -14 ,   -7 ,   -0 ,    7 ,   14 ,   21 ,   29 ,   36 ,   43 ,   50 ,   57 ,   64 ,   71 ,   79 ,   86 ,   93 ,  100 ,  107 ,  114 ,  122 ,  129 ,  136 ,  143 ,  150 ,  157 ,  164 ,  172 ,  179 ,  186 ,  193 ,  200 ,  207 ,  214 ,  222 ,  229 ,  236 ,  243 ,  250 ,  257 ,  264 ,  271 ,  279 ,  286 ,  293 ,  300 ,  307 ,  314 ,  321 ,  328 ,  336 ,  343 ,  350 ,  357 ,  364 ,  371 ,  378 ,  385 ,  393 ,  400 ,  407 ,  414 ,  421 ,  428 ,  435 ,  442 ,  449 ,  457 ,  464 ,  471 ,  478 ,  485 ,  492 ,  499 ,  506 ,  513 ,  520 ,  528 ,  535 ,  542 ,  549 ,  556 ,  563 ,  570 ,  577 ,  584 ,  591 ,  598 ,  605 ,  612 ,  620 ,  627 ,  634 ,  641 ,  648 ,  655 ,  662 ,  669 ,  676 ,  683 ,  690 ,  697 ,  704 ,  711 ,  718 ,  725 ,  732 ,  739 ,  746 ,  753 ,  760 ,  768 ,  775 ,  782 ,  789 ,  796 ,  803 ,  810 ,  817 ,  824 ,  831 ,  838 ,  845 ,  852 ,  859 ,  866 ,  873 ,  880 ,  887 ,  894 ,  900 ,  907 ,  914 ,  921 ,  928 ,  935 ,  942 ,  949 ,  956 ,  963 ,  970 ,  977 ,  984 ,  991 ,  998 , 1005 , 1012 , 1019 , 1026 , 1032 , 1039 , 1046 , 1053 , 1060 , 1067 , 1074 , 1081 , 1088 , 1095 , 1101 , 1108 , 1115 , 1122 , 1129 , 1136 , 1143 , 1150 , 1156 , 1163 , 1170 , 1177 , 1184 , 1191 , 1198 , 1204 , 1211 , 1218 , 1225 , 1232 , 1239 , 1245 , 1252 , 1259 , 1266 , 1273 , 1279 , 1286 , 1293 , 1300 , 1306 , 1313 , 1320 , 1327 , 1334 , 1340 , 1347 , 1354 , 1361 , 1367 , 1374 , 1381 , 1387 , 1394 , 1401 , 1408 , 1414 , 1421 , 1428 , 1434 , 1441 , 1448 , 1455 , 1461 , 1468 , 1475 , 1481 , 1488 , 1495 , 1501 , 1508 , 1514 , 1521 , 1528 , 1534 , 1541 , 1548 , 1554 , 1561 , 1567 , 1574 , 1581 , 1587 , 1594 , 1600 , 1607 , 1614 , 1620 , 1627 , 1633 , 1640 , 1646 , 1653 , 1659 , 1666 , 1673 , 1679 , 1686 , 1692 , 1699 , 1705 , 1712 , 1718 , 1725 , 1731 , 1738 , 1744 , 1750 , 1757 , 1763 , 1770 , 1776 , 1783 , 1789 , 1796 , 1802 , 1808 , 1815 , 1821 , 1828 , 1834 , 1840 , 1847 , 1853 , 1860 , 1866 , 1872 , 1879 , 1885 , 1891 , 1898 , 1904 , 1910 , 1917 , 1923 , 1929 , 1936 , 1942 , 1948 , 1954 , 1961 , 1967 , 1973 , 1980 , 1986 , 1992 , 1998 , 2005 , 2011 , 2017 , 2023 , 2029 , 2036 , 2042 , 2048 , 2054 , 2060 , 2067 , 2073 , 2079 , 2085 , 2091 , 2097 , 2103 , 2110 , 2116 , 2122 , 2128 , 2134 , 2140 , 2146 , 2152 , 2158 , 2164 , 2171 , 2177 , 2183 , 2189 , 2195 , 2201 , 2207 , 2213 , 2219 , 2225 , 2231 , 2237 , 2243 , 2249 , 2255 , 2261 , 2267 , 2273 , 2279 , 2285 , 2290 , 2296 , 2302 , 2308 , 2314 , 2320 , 2326 , 2332 , 2338 , 2344 , 2349 , 2355 , 2361 , 2367 , 2373 , 2379 , 2384 , 2390 , 2396 , 2402 , 2408 , 2413 , 2419 , 2425 , 2431 , 2436 , 2442 , 2448 , 2454 , 2459 , 2465 , 2471 , 2476 , 2482 , 2488 , 2493 , 2499 , 2505 , 2510 , 2516 , 2522 , 2527 , 2533 , 2539 , 2544 , 2550 , 2555 , 2561 , 2567 , 2572 , 2578 , 2583 , 2589 , 2594 , 2600 , 2605 , 2611 , 2616 , 2622 , 2627 , 2633 , 2638 , 2644 , 2649 , 2655 , 2660 , 2666 , 2671 , 2676 , 2682 , 2687 , 2693 , 2698 , 2703 , 2709 , 2714 , 2719 , 2725 , 2730 , 2735 , 2741 , 2746 , 2751 , 2757 , 2762 , 2767 , 2772 , 2778 , 2783 , 2788 , 2793 , 2799 , 2804 , 2809 , 2814 , 2820 , 2825 , 2830 , 2835 , 2840 , 2845 , 2850 , 2856 , 2861 , 2866 , 2871 , 2876 , 2881 , 2886 , 2891 , 2896 , 2901 , 2906 , 2911 , 2916 , 2921 , 2926 , 2931 , 2936 , 2941 , 2946 , 2951 , 2956 , 2961 , 2966 , 2971 , 2976 , 2981 , 2986 , 2991 , 2996 , 3000 , 3005 , 3010 , 3015 , 3020 , 3025 , 3030 , 3034 , 3039 , 3044 , 3049 , 3053 , 3058 , 3063 , 3068 , 3072 , 3077 , 3082 , 3087 , 3091 , 3096 , 3101 , 3105 , 3110 , 3115 , 3119 , 3124 , 3129 , 3133 , 3138 , 3142 , 3147 , 3151 , 3156 , 3161 , 3165 , 3170 , 3174 , 3179 , 3183 , 3188 , 3192 , 3197 , 3201 , 3206 , 3210 , 3214 , 3219 , 3223 , 3228 , 3232 , 3236 , 3241 , 3245 , 3250 , 3254 , 3258 , 3263 , 3267 , 3271 , 3276 , 3280 , 3284 , 3288 , 3293 , 3297 , 3301 , 3305 , 3310 , 3314 , 3318 , 3322 , 3326 , 3330 , 3335 , 3339 , 3343 , 3347 , 3351 , 3355 , 3359 , 3363 , 3368 , 3372 , 3376 , 3380 , 3384 , 3388 , 3392 , 3396 , 3400 , 3404 , 3408 , 3412 , 3416 , 3420 , 3423 , 3427 , 3431 , 3435 , 3439 , 3443 , 3447 , 3451 , 3455 , 3458 , 3462 , 3466 , 3470 , 3474 , 3477 , 3481 , 3485 , 3489 , 3492 , 3496 , 3500 , 3504 , 3507 , 3511 , 3515 , 3518 , 3522 , 3526 , 3529 , 3533 , 3536 , 3540 , 3544 , 3547 , 3551 , 3554 , 3558 , 3561 , 3565 , 3568 , 3572 , 3575 , 3579 , 3582 , 3586 , 3589 , 3593 , 3596 , 3600 , 3603 , 3606 , 3610 , 3613 , 3617 , 3620 , 3623 , 3627 , 3630 , 3633 , 3636 , 3640 , 3643 , 3646 , 3650 , 3653 , 3656 , 3659 , 3662 , 3666 , 3669 , 3672 , 3675 , 3678 , 3681 , 3685 , 3688 , 3691 , 3694 , 3697 , 3700 , 3703 , 3706 , 3709 , 3712 , 3715 , 3718 , 3721 , 3724 , 3727 , 3730 , 3733 , 3736 , 3739 , 3742 , 3745 , 3748 , 3751 , 3753 , 3756 , 3759 , 3762 , 3765 , 3768 , 3770 , 3773 , 3776 , 3779 , 3781 , 3784 , 3787 , 3790 , 3792 , 3795 , 3798 , 3800 , 3803 , 3806 , 3808 , 3811 , 3814 , 3816 , 3819 , 3821 , 3824 , 3827 , 3829 , 3832 , 3834 , 3837 , 3839 , 3842 , 3844 , 3847 , 3849 , 3851 , 3854 , 3856 , 3859 , 3861 , 3863 , 3866 , 3868 , 3871 , 3873 , 3875 , 3877 , 3880 , 3882 , 3884 , 3887 , 3889 , 3891 , 3893 , 3896 , 3898 , 3900 , 3902 , 3904 , 3906 , 3909 , 3911 , 3913 , 3915 , 3917 , 3919 , 3921 , 3923 , 3925 , 3927 , 3929 , 3931 , 3933 , 3935 , 3937 , 3939 , 3941 , 3943 , 3945 , 3947 , 3949 , 3951 , 3953 , 3955 , 3956 , 3958 , 3960 , 3962 , 3964 , 3966 , 3967 , 3969 , 3971 , 3973 , 3974 , 3976 , 3978 , 3979 , 3981 , 3983 , 3984 , 3986 , 3988 , 3989 , 3991 , 3993 , 3994 , 3996 , 3997 , 3999 , 4000 , 4002 , 4003 , 4005 , 4006 , 4008 , 4009 , 4011 , 4012 , 4014 , 4015 , 4017 , 4018 , 4019 , 4021 , 4022 , 4023 , 4025 , 4026 , 4027 , 4029 , 4030 , 4031 , 4033 , 4034 , 4035 , 4036 , 4037 , 4039 , 4040 , 4041 , 4042 , 4043 , 4044 , 4046 , 4047 , 4048 , 4049 , 4050 , 4051 , 4052 , 4053 , 4054 , 4055 , 4056 , 4057 , 4058 , 4059 , 4060 , 4061 , 4062 , 4063 , 4064 , 4065 , 4065 , 4066 , 4067 , 4068 , 4069 , 4070 , 4070 , 4071 , 4072 , 4073 , 4074 , 4074 , 4075 , 4076 , 4076 , 4077 , 4078 , 4078 , 4079 , 4080 , 4080 , 4081 , 4082 , 4082 , 4083 , 4083 , 4084 , 4084 , 4085 , 4086 , 4086 , 4087 , 4087 , 4087 , 4088 , 4088 , 4089 , 4089 , 4090 , 4090 , 4090 , 4091 , 4091 , 4091 , 4092 , 4092 , 4092 , 4093 , 4093 , 4093 , 4094 , 4094 , 4094 , 4094 , 4094 , 4095 , 4095 , 4095 , 4095 , 4095 , 4095 , 4095 , 4096 , 4096 , 4096 , 4096 , 4096 , 4096 , 4096 , 4096 , 4096 , 4096 , 4096 , 4096 , 4096 , 4096 , 4096 , 4096 , 4096 , 4095 , 4095 , 4095 , 4095 , 4095 , 4095 , 4095 , 4094 , 4094 , 4094 , 4094 , 4094 , 4093 , 4093 , 4093 , 4092 , 4092 , 4092 , 4091 , 4091 , 4091 , 4090 , 4090 , 4090 , 4089 , 4089 , 4088 , 4088 , 4087 , 4087 , 4087 , 4086 , 4086 , 4085 , 4084 , 4084 , 4083 , 4083 , 4082 , 4082 , 4081 , 4080 , 4080 , 4079 , 4078 , 4078 , 4077 , 4076 , 4076 , 4075 , 4074 , 4074 , 4073 , 4072 , 4071 , 4070 , 4070 , 4069 , 4068 , 4067 , 4066 , 4065 , 4065 , 4064 , 4063 , 4062 , 4061 , 4060 , 4059 , 4058 , 4057 , 4056 , 4055 , 4054 , 4053 , 4052 , 4051 , 4050 , 4049 , 4048 , 4047 , 4046 , 4044 , 4043 , 4042 , 4041 , 4040 , 4039 , 4037 , 4036 , 4035 , 4034 , 4033 , 4031 , 4030 , 4029 , 4027 , 4026 , 4025 , 4023 , 4022 , 4021 , 4019 , 4018 , 4017 , 4015 , 4014 , 4012 , 4011 , 4009 , 4008 , 4006 , 4005 , 4003 , 4002 , 4000 , 3999 , 3997 , 3996 , 3994 , 3993 , 3991 , 3989 , 3988 , 3986 , 3984 , 3983 , 3981 , 3979 , 3978 , 3976 , 3974 , 3973 , 3971 , 3969 , 3967 , 3966 , 3964 , 3962 , 3960 , 3958 , 3956 , 3955 , 3953 , 3951 , 3949 , 3947 , 3945 , 3943 , 3941 , 3939 , 3937 , 3935 , 3933 , 3931 , 3929 , 3927 , 3925 , 3923 , 3921 , 3919 , 3917 , 3915 , 3913 , 3911 , 3909 , 3906 , 3904 , 3902 , 3900 , 3898 , 3896 , 3893 , 3891 , 3889 , 3887 , 3884 , 3882 , 3880 , 3877 , 3875 , 3873 , 3871 , 3868 , 3866 , 3863 , 3861 , 3859 , 3856 , 3854 , 3851 , 3849 , 3847 , 3844 , 3842 , 3839 , 3837 , 3834 , 3832 , 3829 , 3827 , 3824 , 3821 , 3819 , 3816 , 3814 , 3811 , 3808 , 3806 , 3803 , 3800 , 3798 , 3795 , 3792 , 3790 , 3787 , 3784 , 3781 , 3779 , 3776 , 3773 , 3770 , 3768 , 3765 , 3762 , 3759 , 3756 , 3753 , 3751 , 3748 , 3745 , 3742 , 3739 , 3736 , 3733 , 3730 , 3727 , 3724 , 3721 , 3718 , 3715 , 3712 , 3709 , 3706 , 3703 , 3700 , 3697 , 3694 , 3691 , 3688 , 3685 , 3681 , 3678 , 3675 , 3672 , 3669 , 3666 , 3662 , 3659 , 3656 , 3653 , 3650 , 3646 , 3643 , 3640 , 3636 , 3633 , 3630 , 3627 , 3623 , 3620 , 3617 , 3613 , 3610 , 3606 , 3603 , 3600 , 3596 , 3593 , 3589 , 3586 , 3582 , 3579 , 3575 , 3572 , 3568 , 3565 , 3561 , 3558 , 3554 , 3551 , 3547 , 3544 , 3540 , 3536 , 3533 , 3529 , 3526 , 3522 , 3518 , 3515 , 3511 , 3507 , 3504 , 3500 , 3496 , 3492 , 3489 , 3485 , 3481 , 3477 , 3474 , 3470 , 3466 , 3462 , 3458 , 3455 , 3451 , 3447 , 3443 , 3439 , 3435 , 3431 , 3427 , 3423 , 3420 , 3416 , 3412 , 3408 , 3404 , 3400 , 3396 , 3392 , 3388 , 3384 , 3380 , 3376 , 3372 , 3368 , 3363 , 3359 , 3355 , 3351 , 3347 , 3343 , 3339 , 3335 , 3330 , 3326 , 3322 , 3318 , 3314 , 3310 , 3305 , 3301 , 3297 , 3293 , 3288 , 3284 , 3280 , 3276 , 3271 , 3267 , 3263 , 3258 , 3254 , 3250 , 3245 , 3241 , 3236 , 3232 , 3228 , 3223 , 3219 , 3214 , 3210 , 3206 , 3201 , 3197 , 3192 , 3188 , 3183 , 3179 , 3174 , 3170 , 3165 , 3161 , 3156 , 3151 , 3147 , 3142 , 3138 , 3133 , 3129 , 3124 , 3119 , 3115 , 3110 , 3105 , 3101 , 3096 , 3091 , 3087 , 3082 , 3077 , 3072 , 3068 , 3063 , 3058 , 3053 , 3049 , 3044 , 3039 , 3034 , 3030 , 3025 , 3020 , 3015 , 3010 , 3005 , 3000 , 2996 , 2991 , 2986 , 2981 , 2976 , 2971 , 2966 , 2961 , 2956 , 2951 , 2946 , 2941 , 2936 , 2931 , 2926 , 2921 , 2916 , 2911 , 2906 , 2901 ,
                             };




void output(int electric_angle, int effort) {

  int pole_angle = mod((phase_multiplier * electric_angle) , 3600);


  int sine = sin_lookup[pole_angle];
  int cosine = cos_lookup[pole_angle];

  int v_ref_coil_A = ((abs(effort) * sine) ) / 4096;
  int v_ref_coil_B = ((abs(effort) * cosine) ) / 4096;


  if (v_ref_coil_A >= 0)  {
    digitalWriteDirect(IN_1, LOW);
    digitalWriteDirect(IN_2, HIGH);
  }
  else  {
    digitalWriteDirect(IN_1, HIGH);
    digitalWriteDirect(IN_2, LOW);
  }

  if (v_ref_coil_B >= 0)  {
    digitalWriteDirect(IN_3, LOW);
    digitalWriteDirect(IN_4, HIGH);
  }
  else  {
    digitalWriteDirect(IN_3, HIGH);
    digitalWriteDirect(IN_4, LOW);
  }


  analogFastWrite(VREF_1, abs(v_ref_coil_A));
  analogFastWrite(VREF_2, abs(v_ref_coil_B));

}
